import java.util.Scanner;

public class Main {
    static lx9_1 lx[];
    static boolean bu[];
    static int n;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int t = scanner.nextInt();
        // 键盘录入t 利用循环输出每一组 看是YES还是NO
        while (t-- > 0) {
            n = scanner.nextInt();
            // 建立一个类型为lx9_1的数组 长度为n
            lx = new lx9_1[n];
            // 判断lx[i]这个lx9_1类型的数组是否被使用过
            bu = new boolean[n];
            for (int i = 0; i < n; i++) {
                int a = scanner.nextInt();
                int b = scanner.nextInt();
                int c = scanner.nextInt();
                // 初始化lx[i]这个数组 并为之三个值存入一个对象 方便后续使用
                lx[i] = new lx9_1(a, b, c);
            }
            // dfs有返回值 如果是true则是YES 是false则是NO
            if (dfs(0, 0)) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }
    }

    // 大法师 启动 目标:看一组飞机中 是否都可以安全降落 变量fj是飞机的降落的个数 变量last是某个飞机降落完成的最早时间(由贪心算法可知 降落早
    // 可以使后面飞机有更多充足的时间降落) 先开始都为0
    static boolean dfs(int fj, int last) {
        // ## 飞机全部降落完了 然后就返回调用处(就是 $$ 这个的地方) 返回为true
        if (fj == n) {
            return true;
        }
        // 每次遍历所有lx数组 再由这 if (!bu[i] && lx[i].t + lx[i].d >= last) 看是否可以取
        for (int i = 0; i < n; i++) {
            // !bu[i] 是说要lx[i]这个数组没使用过 lx[i].t + lx[i].d >= last 这个是必要条件 只有这个的 (飞机来的时间 与
            // 盘旋的时间的和) 大于 上一个飞机的最早降落完时间 才可以 降落 否则 出事故
            if (!bu[i] && lx[i].t + lx[i].d >= last) {
                // 进入了 那么 就将这个对像赋为true 让之后不再重复使用
                bu[i] = true;
                // $$ 要是都满足条件的化 改变fj和last的值 然后递归 直到 ## fj == n 返回true 然后就一直返回true
                // 知道main方法里的dfs()收到ture
                // 要是有false的化就要换一架飞机了
                if (dfs(fj + 1, Math.max(last, lx[i].t) + lx[i].l)) {
                    return true;
                }
                // 将这个对像赋为false 可以让之后再出现
                bu[i] = false;
            }
        }
        // 1.当这一组都没合适的 就返回到main方法里的dfs()为false
        // 2.在多次递归里面 的某一次没有符合条件的 需要这个退出这个方法 并返回false 让其重新换飞机
        return false;
    }
}

//创个类 达到三个值可以被一个对象存入的目的
class lx9_1 {
    int t, d, l;

    public lx9_1(int t, int d, int l) {
        this.t = t;
        this.d = d;
        this.l = l;
    }

}